Repository navigation
Derived experiment_design.csv and cross-version parity suite (Stage 1, PR 10) - #196
Merged
Merged
Conversation
… suite (Stage 1, PR 10) derive_design/write_derived_design give the legacy file from a published description, written by today's writer: byte-equal to the Spec goldens (v13, v33, v34) and to the oracle's derivation of every valid fixture. The parity suite runs v0.4.0 and this code on six legacy homogeneous datasets: identical exports, identities and row reuse, and the derived design equals the bytes v0.4.0 wrote. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Scma6W3LC11s3qjXHZuGDm
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Scma6W3LC11s3qjXHZuGDm
guijacquemet
pushed a commit
that referenced
this pull request
Nov 7, 2026
#196 added the module on main; the gate refuses an unlisted Spec module, as designed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Scma6W3LC11s3qjXHZuGDm
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #195 (the re-pin to Spec
7dbae0c, which brings the golden files this PR compares against). The base is that branch so the diff shows only this PR. Retarget tomainafter #195 merges.What
Stage 1 design PR 10 (design sections 3 "Derived experiment_design.csv", 4 "Compatibility", row 10; conformance P30 and P32, derived part). Additive: no run, notebook or CLI command uses it yet.
design_derive(layerio):derive_design(description) -> ExperimentDesignandwrite_derived_design(description, path), per Spec section 11:conditionis the condition'ssource_folder,biological_repeatthe member'ssource_repeat,repeat_groupthe repeat ID;controlis true for a condition that another condition names as itsreference;image_countis the member's,technical_repeat_countis 0 for the single unitsingleand else the number of units;confirmedis true (the reader refuses a published repeat that is not) andconfirmed_onis the repeat's date.write_experiment_design; the sort is its own (condition, then repeat, code point order). The file carries folder labels and no condition, technical-repeat or channel ID, so renaming such an ID never changes it. Nothing is guessed, defaulted or repaired.tests/test_spec_derived_design.py(77 tests): the derived file equals the Spec golden files forv13,v33andv34byte for byte, and equals the reference validator'sderive_csvon every valid fixture (36); every derived file is read back byread_confirmed_design.tests/test_parity_v0_4_0.py(24 tests) withtests/parity_datasets.py: the same confirm-run-rerun script runs under thev0.4.0tag (tests/released_code.py, which fails rather than skips in CI) and under this checkout, on six legacy homogeneous datasets: one repeat, two conditions by two repeats, technical repeats, flat, OME names, RGB. For each:plane_histograms.csvandexperiment_design.csvare byte-identical (so plane IDs, FOV keys andposition_idare the same);raw_channel_names(asserted as the allowed difference);v13) equals the bytes v0.4.0 wrote.Notes for review
control = false; a group with several legacy dates takes the latest) are not exercised: every dataset above has one control referenced by all other conditions, or none.single,single) in both versions when a design is passed to the run.design.pyis untouched (it is already over the line limit); the new code lives in the new module.Tests
On the base branch the two new test files fail at collection (
ModuleNotFoundError: morphobricks_preprocessing.design_derive). Here: 77 and 24 passed.python tools/check.py: 4041 passed, 4 skipped, code rules clean;ruff checkandruff format --checkclean. The 4 skips are environment ones (case-insensitive file system and file-mode tests, unrelated to this change).Generated by Claude Code